Erro na função $dbh->fetchrow_array() [RESOLVIDO]

1. Erro na função $dbh->fetchrow_array() [RESOLVIDO]

José Cleydson Ferreira da Silva
cleysinhonv

(usa Ubuntu)

Enviado em 15/07/2011 - 17:33h

Pessoal estou utilizando a função abaixo e esta dando o seguinte erro que também está mostrado abaixo.
Podem me ajudar fazer essa correção.


Obs.: O módulo DBI está instalado

==================================== Código da sub rotina =============================================

sub selectInstitution{

my $idInstitution = shift;

if(@_){
$idInstitution->{idInstitution};
}

$institution->setId($idInstitution);
$idInst= $institution->getId();

my $sql = "select * from `institution` WHERE idinstitution='$idInst'"; # este select mostra apenas 1 resultado
my $query = $dbh->prepare($sql);

if($query->execute){

my $data = $dbh->fetchrow_array(); # Esta é a linha 15 que aparece no erro abaixo

return $data;

}else{
return 'Não foi possível selecionar a instituição!';
}
}

============================= Erro quando uso a subrotina =======================================

Fri Jul 15 17:31:41 2011] [error] Can't locate object method "fetchrow_array" via package "DBI::db" at /var/www/bioinfo/controller//controllerInstitution.pm line 115.\n





  


2. MELHOR RESPOSTA

Daniel Vinciguerra
dvinciguerra

(usa Debian)

Enviado em 26/07/2011 - 21:21h

bom vendo assim fica meio difícil de te ajudar, mas o método $dbh->fetchrow_array retorna um array e não um scalar... poderia ter utilizado o fetchrow_arrayref!

não entendi bem a estrutura que você esta utilizando ali em cima mas se você esta definindo um valor em um obj só pra usar o accessor dele... isso é dispensável! use a variável recebida da função, é muito mais simples, limpo e rápido.

outro ponto é que não vejo onde você inicia a conexão com o banco de dados.
eu faria esta implementação da seguinte maneira:


sub select_institution {
my $id = shift;

eval {
my $dbh = database_connect();
my $sth = $dbh->prepare( "SELECT * FROM institution WHERE idinstitution = '$id';" );
$sth->execute;

return $sth->fetchrow_arrayref;
};
if ( $@ ) {
die "Error selecting institution: $@ ";
}

return 0;
}

...

Bom, fica ai a dica... espero que lhe ajude em algo!

Forte abraço,





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts